Not too long after inventing numbers and a writing system, early humans realized that they had inadvertently created information. With the creation of information came a problem that would vex humankind for the next several millennia: how to store and manage the information.
Fortunately, the amount of information created by early humans was relatively small and could be tracked using ten fingers and ten toes. Stone or clay tablets were employed to track information when a more permanent record was desired. One early well known example of this mechanism was used by Moses, who stored a body of Ten Commandments on two such stone tablets. These mechanisms were limited, however, to write-once, read-many implementations and were tightly constrained in capacity.
With the advent of the Gutenberg printing press, came the ability to store larger quantities of information as well as to produce copies of stored information in volume. While, these mechanisms also were limited to write-once, read-many implementations, they facilitated the widespread dissemination of knowledge, which in turn accelerated the advance of technical progress. A few centuries later, the computer and database software systems appeared. The computer database provided large capacity, write-read storage in a readily available package. For awhile, it appeared that humankind's age old information storage and management problem had finally been solved.
Computer databases, however, are plagued by numerous problems. Each organization, business or agency, installs its own copy of the database. It was not long, however, before users wished to add their own custom objects and applications to their database in addition to the standard objects and standard applications already provided. The desire for customization lead to disparate schema, an organization of the types of information being stored in the database, as well as applications relying upon that schema being implemented by different users. Disparate schema, in turn blocked any hope of users in different organizations of sharing information or applications among one another.